package com.lagou.edu.support;

import org.dom4j.DocumentException;

import java.io.IOException;

/**
 * catalina负责读取server.xml文件，初始化server
 *
 * @author liangzj
 * @date 2021/4/10 20:16
 */
public class Catalina {

    private static final Server SERVER = new Server();

    public Catalina() {
        try {
            /**
             * 这里做了如下几件事：
             * 1. 解析server.xml配置，初始化连接器和容器
             * 2. 容器创建过程中，解析不同应用的web.xml文件，创建context
             * 3. 创建context的过程中，将配置的中的servlet实例化，以Map<url, servlet>形势保存在context中
             * <p>
             * 最终的结果是：
             * 1. 连接器对象创建完成
             * 2. context创建完成，包括应用下所有servlet的实例化对象
             * 3. 将连接器和容器绑定到service中
             */
            init();
        } catch (DocumentException | IOException e) {
            e.printStackTrace();
        }
    }

    public void startup() {
        SERVER.startup();
    }

    private void init() throws DocumentException, IOException {
        ServerXmlResolver serverXmlResolver = new ServerXmlResolver(SERVER);
        serverXmlResolver.resolver();
    }
}
